home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / utilities / easyproc2.lha / EasyProcess / hc / Packet.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-05  |  747 b   |  49 lines

  1. /*
  2.  *    Packet functions.
  3.  *
  4.  */
  5.  
  6. #include "hc.h"
  7.  
  8.  
  9. void ReturnPacket (struct DosPacket *Packet, struct Process *Proc)
  10. {
  11.     struct Message *Msg;
  12.     struct MsgPort *Port;
  13.  
  14.     Port = Packet->dp_Port;
  15.     Msg = Packet->dp_Link;
  16.     Packet->dp_Port = &Proc->pr_MsgPort;
  17.     Msg->mn_Node.ln_Name = (char *)Packet;
  18.     PutMsg (Port, Msg);
  19. }
  20.  
  21.  
  22. struct DosPacket *WaitPacket(struct Process *Proc)
  23. {
  24.     struct Message *Msg;
  25.     struct MsgPort *Port;
  26.  
  27.     Port = &Proc->pr_MsgPort;
  28.  
  29.     while (1)
  30.     {
  31.         if (SetSignal (0L, 0L) & ReadFlag)
  32.         {
  33.             SetSignal (0L, ReadFlag);
  34.             ReadSer ();
  35.         }
  36.         else if (Msg = GetMsg (Port))
  37.         {
  38.             return (struct DosPacket *)Msg->mn_Node.ln_Name;
  39.         }
  40.         else
  41.         {
  42.             if (Wait ( (1L << Port->mp_SigBit) | ReadFlag) & ReadFlag)
  43.             {
  44.                 ReadSer ();
  45.             }
  46.         }
  47.     }
  48. }
  49.